home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The X-Philes (2nd Revision)
/
The X-Philes Number 1 (1995).iso
/
xphiles
/
hp48hor2
/
bond.src
< prev
next >
Wrap
Text File
|
1992-08-18
|
4KB
|
145 lines
%%HP: T(3)A(D)F(.);
@ BOND by Chris Tham
DIR
GO
\<< BDISP BMENU TMENU \>>
SETTLE 22.111991
MATUR 15.112
CPN 12
YIELD 10.5
BPRICE 108.812374617
EXINT 15
FREQ 2
BOND
\<<
IF N 1 <
THEN 100 CPN FREQ / + YIELD 100 / FREQ / F * D / 1 + /
ELSE CPN FREQ / YIELD 100 / FREQ / DUP 1 + INV DUP N ^ \-> G I V VN
'V^(F/D)*(G*(X+(1-VN)/I)+100*VN)'
END
\>>
ACCR
\<< CPN FREQ / D F - D / * \>>
DUR
\<< CPN FREQ / YIELD 100 / FREQ / DUP 1 + INV DUP N ^ F D / \-> G I V VN FD
'V^FD/FREQ*(G/I*((1-VN)/(I*V)-N*VN)+G*FD*(X+(1-VN)/I)+100*(N+FD)*VN)/BOND'
\>>
MDUR
\<< DUR YIELD 100 / FREQ / 1 + / \>>
CONVEX
\<< CPN FREQ / YIELD 100 / FREQ / DUP 1 + INV F D / \-> G I V FD
'V^(FD+2)*(G*\GS(J=0,N,(J+F/D)*(J+FD+1)*V^J)+100*(N+F/D)*(N+F/D+1)*V^
N)/BOND/FREQ/FREQ'
\>>
DISPER
\<< DUR DUP DUP * SWAP FREQ / + CONVEX YIELD 100 / FREQ / 1 + DUP * *
SWAP - \v/
\>>
PVBP
\<< BOND .01 'YIELD' STO+ BOND - -.01 'YIELD' STO+ \>>
YAPPROX
\<< CPN FREQ / 100 BPRICE - N F D / + / + 100 BPRICE + 2 / / 100 * FREQ *
\>>
Bpar
\<< -12 FREQ / MATUR DMY\-> DROP DROP SETTLE DMY\-> DROP DROP -
IF DUP 1 >
THEN 1 - DUP NEG MATUR SWAP YADD SWAP FREQ * 1 -
ELSE DROP MATUR -1
END 'N' STO \-> M C
\<< C
WHILE DUP SETTLE DDAYS 0 <
REPEAT DUP 'C' STO M MADD 'N' INCR DROP
END C DDAYS 'D' STO SETTLE C DDAYS DUP 'F' STO EXINT \>= 1 0 IFTE
'X' STO
\>>
\>>
D 182
F 175
N 17
X 1
BMENU {
{ "SETTLE" {
\<< 'SETTLE' STO BDISP \>>
\<< BDISP \>>
\<< SETTLE "Settle" \->TAG \>> } }
{ "MATUR" {
\<< 'MATUR' STO BDISP \>>
\<< BDISP \>>
\<< MATUR "Mat" \->TAG \>> } }
{ "CPN" {
\<< 'CPN' STO BDISP \>>
\<< BDISP \>>
\<< CPN "Coupon" \->TAG \>> } }
{ "YIELD" {
\<< 'YIELD' STO BDISP \>>
\<< Bpar 'BOND- BPRICE' 'YIELD' YAPPROX ROOT DROP BDISP \>>
\<< YIELD "Yield" \->TAG \>> } }
{ "PRICE" {
\<< 'BPRICE' STO BDISP \>>
\<< Bpar BOND 'BPRICE' STO BDISP \>>
\<< BPRICE "Price" \->TAG \>> } }
{ "RBA" \<< RDISP BDISP \>> }
{ "CAPL" \<< Bpar BOND ACCR - "Capital" \->TAG \>> }
{ "ACCR" \<< Bpar ACCR "AccrInt" \->TAG \>> }
{ "DUR" \<< Bpar DUR "Dur" \->TAG \>> }
{ "MDUR" \<< Bpar MDUR "MDur" \->TAG \>> }
{ "CONV" \<< Bpar CONVEX "Convexity" \->TAG \>> }
{ "DISPR" \<< Bpar DISPER "Dispersion" \->TAG \>> }
{ "PVBP" \<< Bpar PVBP "PVBP" \->TAG \>> }
FREQ EXINT }
RDISP
\<< RCLF STD CLLCD Bpar "n " N \->STR + 1 DISP
"f " F \->STR + 2 DISP
"d " D \->STR + 3 DISP
"x " X \->STR + 4 DISP
"g " CPN FREQ / \->STR + 5 DISP
YIELD 100 / FREQ / "i " OVER \->STR + 6 DISP
"v " SWAP 1 + INV \->STR + 7 DISP
STOF 0 WAIT DROP
\>>
BDISP
\<< CLLCD RCLF "Settlement " SETTLE DSTR + 3 DISP
"Maturity " MATUR DSTR + 4 DISP
"Coupon " 2 FIX CPN \->STR + "%" + 5 DISP
"Yield " 3 FIX YIELD \->STR + "%" + 6 DISP
"Bond Price " BPRICE \->STR + 7 DISP
2 FREEZE STOF
\>>
DSTR
\<< RCLF SWAP DMY\-> STD \->STR "-" +
{ "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec" }
ROT GET + "-" + SWAP + SWAP STOF
\>>
YADD
\<< SWAP DMY\-> \-> Y1 Y M D
\<< Y Y1 + M D \->DMY
\>>
\>>
MADD
\<< SWAP DMY\-> \-> M1 Y M D
\<< M M1 +
WHILE DUP 1 <
REPEAT 12 + 'Y' DECR DROP
END
WHILE DUP 12 >
REPEAT 12 - 'Y' INCR DROP
END Y SWAP D \->DMY
\>>
\>>
\->DMY
\<< \-> Y M D
\<< Y 10000 / M + 100 / D +
\>>
\>>
DMY\->
\<< \-> D
\<< D IP D FP 100 * DUP IP SWAP FP 10000 * 3 ROLLD
IF -42 FS?
THEN SWAP
END
\>>
\>>
END